package cn.laoma.thread1.t1_003;

import lombok.SneakyThrows;

import java.util.concurrent.TimeUnit;

/**
 * @program: ThreadDemos
 * @description: 锁粒度
 * 原则：
 * @author: 老马
 * @create: 2021-10-23 20:07
 **/
public class Sync06 {

    int count = 0;

    @SneakyThrows
    synchronized void m1() {
        //模拟业务用时
        TimeUnit.SECONDS.sleep(1);
        //实际业务这里是需要同步的。这时就应该加到方法上
        count ++;
        //模拟业务用时
        TimeUnit.SECONDS.sleep(1);
    }


     @SneakyThrows
     void m2() {
         //模拟业务用时
         TimeUnit.SECONDS.sleep(1);
         //实际业务这里是需要同步的。这时就应该加到方法上
         //采用细颗粒度的锁，可以使线程竞争锁的时间变短。从而提高效率。
         synchronized (this) {
             count ++;
         }
         //模拟业务用时
         TimeUnit.SECONDS.sleep(1);
     }

}
